// util/request_parser.go
package util

import (
	"strings"

	"github.com/gin-gonic/gin"
)

// ParseRequestParams 提取请求参数（JSON、表单、Query）
func ParseRequestParams(c *gin.Context) map[string]interface{} {
	params := make(map[string]interface{})

	// 1. 提取Query参数（URL中的?xxx=xxx）
	queryParams := c.Request.URL.Query()
	for k, v := range queryParams {
		if len(v) > 0 {
			params[k] = v[0] // 简单处理：取第一个值
		}
	}

	// 2. 提取表单参数（Content-Type: application/x-www-form-urlencoded）
	if strings.Contains(c.ContentType(), "application/x-www-form-urlencoded") {
		_ = c.Request.ParseForm()
		formParams := c.Request.PostForm
		for k, v := range formParams {
			if len(v) > 0 {
				params[k] = v[0]
			}
		}
	}

	// 3. 提取JSON参数（Content-Type: application/json）
	if strings.Contains(c.ContentType(), "application/json") {
		var jsonParams map[string]interface{}
		if err := c.ShouldBindJSON(&jsonParams); err == nil {
			for k, v := range jsonParams {
				params[k] = v
			}
		}
	}

	// 4. 提取路径参数（如/user/:id中的id）
	for _, param := range c.Params {
		params[param.Key] = param.Value
	}

	return params
}
